#include<iostream>
#include<new>
using namespace std;
class node{
public:
    int num;
};
int main(){
    int *a;
    cout<<"normal new for 50"<<endl;
    a=new int[50];

    node *b;
    char buffer1[50];//手动维护一片内存空间
    cout<<"placement new for node"<<endl;
    b=new(buffer1)node;//把buffer1中存满node
    //申请完后，b和buffer1中实际上指向的是同一片空间
    b[0].num=100;
    b[1].num=200;

    for(int i=0;i<50;i++){
        cout<<b[i].num<<" ";//这里只初始化了前2个对象，后面的对象由于没有初始化，于是数值是错误的
    }

    //new placement的优点是，如果在一次大量的数组操作中，频繁的new  delete数组，会造成程序在系统中频繁的寻找连续的空间，一定程度上影响程序效率，我们手动维护一片自己申请的空间就可以避免这个后果
    return 0;
}